home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / boostrs.arc / STRIP.ASM < prev    next >
Assembly Source File  |  1985-11-09  |  1KB  |  76 lines

  1. ;**********************************************
  2. ;
  3. ;       Type
  4. ;          AnyString = string[255];
  5. ;
  6. ;       Function Strip ( S : AnyString;
  7. ;                        C : Char) : AnyString;
  8. ;
  9. ;       Returns a string equal to S with leading
  10. ;       and trailing characters C removed.
  11. ;
  12. ;**********************************************
  13. STRIP    proc    near
  14.     push    bp
  15.     mov    bp,sp
  16.     push    ds
  17. ;
  18. ;*** Scan left-side of string for 1st
  19. ;*** character <> arg C
  20. ;
  21.     lea    di,[bp+7]    ; 1st char of S
  22.     mov    cl,[bp+6]    ; len of S
  23.     xor    ch,ch
  24.     mov    ax,ss
  25.     mov    es,ax
  26.     mov    ax,[bp+4]    ; C in AX
  27.     cmp    cx,1
  28.     ja    s001
  29. ;
  30.         mov     bl,[bp+7]
  31.     xor    bh,bh
  32.     cmp    ax,bx
  33.     je    null_s
  34.     mov    dx,di
  35.     jmp    s002
  36.  
  37. S001:    cld
  38. repe    scasb        ; find mismatch
  39.     jcxz    null_s
  40.     dec    di
  41.     mov    dx,di        ; save offset
  42. ;
  43. ;*** Scan right-side of string for 1st
  44. ;*** character <> arg C
  45. ;
  46.     mov    cl,[bp+6]    ; len of S
  47.     xor    ch,ch
  48.     lea    di,[bp+7]
  49.     add    di,cx
  50.     dec    di
  51.     std
  52. repe    scasb
  53.     inc    di
  54. ;
  55. ;*** Move stripped-S into result
  56. ;
  57.     mov    cx,di
  58.     sub    cx,dx
  59.     inc    cx        ; len of stripped S
  60. S002:    mov    [bp+262],cl    ; set len in result
  61.     mov    si,dx
  62.     lea    di,[bp+263]
  63.     mov    ax,ss
  64.     mov    ds,ax
  65.     cld
  66. rep    movsb
  67.     jmp    return
  68. ;
  69. NULL_S: mov    [bp+262],0
  70. ;
  71. RETURN: pop    ds
  72.     mov    sp,bp
  73.     pop    bp
  74.     ret    258
  75. STRIP    endp
  76.